In a transaction-oriented environment, rollback is a kind of activity that removes the change made by a previous transaction. Rollback is needed for failure situation to ensure that the controlled resource is at a point of consistency. For non-failure situation, rollback is a way to get rid of a previous transaction whose effect on the controlled resource is no longer desired.
Traditionally, a full function database manager system (DBMS) handles this by writing the "undo" and "redo" records in its log which describes changes to the database. The "undo" information is used to simply back out work done in the past. When a certain transaction is to be backed out, whether it's a failure or a non-failure situation, the cascading effect of that transaction must be taken into consideration by the DBMS. The log is scanned backward from the last entry and a list is generated to identify those transactions that have a dependency on the transaction being rolled back. All the dependent transactions must be rolled back in the reverse order through their "undo" records. After the target transaction is rolled back, the "redo" record of each dependent transaction is then used to recover the database to its point of consistency. This is a rather error prone and time consuming procedure when the cascading effect is complex and the number of transactions involved is large.
In typical environments, rollback is constantly required in many normal, non-failure situations to remove effects of some previously executed transactions. Rollback requests can always be satisfied as long as all the transaction records are maintained through the traditional logging process. However, in those non-failure situations, logging is not a preferred mechanism because the excessive I/Os involved are too expensive.
In addition, logging is only needed to recover from failure situations. Volatile storage provides better performance for non-failure situations. Moreover, logging does not provide a way to easily handle the cascading effects.
To satisfy the requirements for non-failure type of rollbacks when performance and DASD storage are important concerns, some means other than logging is needed.